#define EMPTY()
#define DEFER(id) id EMPTY()
#define OBSTRUCT(...) __VA_ARGS__ DEFER(EMPTY)()
#define EXPAND(...) __VA_ARGS__

#define A() 123
#define B() A()

// 直接调用
//B();  // 展开为123

// 延迟调用
DEFER(B)(); // 展开为B ()

DEFER(B)();
id EMPTY()();
id();

#define fn(name, ret, ...) \
    ret name(__VA_ARGS__) {}

//fn(query_select,void,const char * s)

//fn(query_from,void,const char * s)

//fn(query_where,void,const char * s)

#define SELECT(...) query_select(#__VA_ARGS__);
#define FROM(table) query_from(#table);
#define WHERE(cond) query_where(#cond);

int main3()
{ // 使用示例：
    //            SELECT(id, name, age) FROM(users) WHERE(age > 18)
}
